depth distribution = from complete 2021 trawling data (not only individuals sampled for isotope)
Show the code
# calculate median depth by species with trawling data set 2021mean_depth_sp <- density_distribution %>%group_by(Nom_Scientifique) %>%mutate(median_depth =median(trawling_depth)) %>%select(Nom_Scientifique, median_depth) %>%distinct() %>%ungroup() %>%arrange(Nom_Scientifique) %>%rename(species = Nom_Scientifique)# Gap statisticfactoextra::fviz_nbclust( elp.olp_community , kmeans,nstart =25,method ="gap_stat",nboot =100,verbose =FALSE) +labs(subtitle ="Gap statistic method")
Show the code
res.km <-kmeans(scale(elp.olp_community), 5, nstart =25)# Dimension reduction using PCAres.pca <-prcomp(elp.olp_community [,-5], scale =TRUE)# Individual coordinatesind.coord <-as.data.frame(factoextra::get_pca_ind(res.pca)$coord)# Add the clusters obtained using the k-means algorithmind.coord$cluster <-factor(res.km$cluster)# Percentage of variance explained by dimensionseigenvalue <-round(factoextra::get_eigenvalue(res.pca), 1)variance.percent <- eigenvalue$variance.percent# Add species names and median depthind.coord_depth <-cbind(ind.coord, mean_depth_sp)ind.coord_depth$median_depth <-as.factor(ind.coord_depth$median_depth)
# 25m Z0508 ----individuals_si_epi <- individuals_si%>%filter(station =="Z0508")%>%select(-station)status_biomass_epi <- species_status_biomass%>%filter(Status=="epipelagic")# computing mean Stable Isotope values for each species# "group" column identical to species_code to fit with input format of function meanSI_group# no "weight" input as number of indivuals sampled per species did not mirror actual species biomassindividuals_si_epi<-data.frame(group=individuals_si_epi[,"Species_code"], individuals_si_epi)mean_si_species_epi<-meanSI_group(individuals_si_epi)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_epi[,"sd_d13C"]/mean_si_species_epi[,"d13C"], CV_d15N=mean_si_species_epi[,"sd_d15N"]/mean_si_species_epi[,"d15N"] )
# -> intraspecific variability is overall low (<20%)# checking that species codes are the same in the two tablesrow.names(mean_si_species_epi)==status_biomass_epi[,"Species_code"] # OK
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_epi <-data.frame(mean_si_species_epi[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_epi[,"rel_biomass"], Status=status_biomass_epi[,"Status"], latin_name=status_biomass_epi[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_epi<-scaleSI_range01(data_fish_epi)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_epi<-IDiversity(cons=data_fish_scl_epi, weight=data_fish_scl_epi[,c("rel_biomass")], nm_plot="1_epipelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_epi,3))
epipelagic_d13C_d15N
Upper mesopelagic
370m (Z0492) & 555m (Z0512)
Show the code
individuals_si_upm <- individuals_si%>%filter(station%in%c("Z0492", "Z0512"))%>%select(-station)status_biomass_upm <- species_status_biomass%>%filter(Status=="upper-mesopelagic")# computing mean Stable Isotope values for each speciesindividuals_si_upm<-data.frame(group=individuals_si_upm[,"Species_code"], individuals_si_upm)mean_si_species_upm<-meanSI_group(individuals_si_upm)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_upm[,"sd_d13C"]/mean_si_species_upm[,"d13C"], CV_d15N=mean_si_species_upm[,"sd_d15N"]/mean_si_species_upm[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_upm <-data.frame(mean_si_species_upm[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_upm[,"rel_biomass"], Status=status_biomass_upm[,"Status"], latin_name=status_biomass_upm[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_upm<-scaleSI_range01(data_fish_upm)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_upm<-IDiversity(cons=data_fish_scl_upm, weight=data_fish_scl_upm[,c("rel_biomass")], nm_plot="2_upper_meso")# printing resultsresult <-as.data.frame(round(ID_scl_ab_upm,3))
370m
Lower mesopelagic
715m (Z0503)
1000m (Z0518)
Show the code
individuals_si_lwm <- individuals_si%>%filter(station%in%c("Z0503", "Z0518"))%>%select(-station)status_biomass_lwm<- species_status_biomass%>%filter(Status=="lower-mesopelagic")# computing mean Stable Isotope values for each speciesindividuals_si_lwm<-data.frame(group=individuals_si_lwm[,"Species_code"], individuals_si_lwm)mean_si_species_lwm<-meanSI_group(individuals_si_lwm)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_lwm[,"sd_d13C"]/mean_si_species_lwm[,"d13C"], CV_d15N=mean_si_species_lwm[,"sd_d15N"]/mean_si_species_lwm[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_lwm <-data.frame(mean_si_species_lwm[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_lwm[,"rel_biomass"], Status=status_biomass_lwm[,"Status"], latin_name=status_biomass_lwm[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_lwm<-scaleSI_range01(data_fish_lwm)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_lwm<-IDiversity(cons=data_fish_scl_lwm, weight=data_fish_scl_lwm[,c("rel_biomass")], nm_plot="3_lower-mesopelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_lwm,3))
715m
Bathypelagic
1335m (Z0497)
Show the code
individuals_si_bathy <- individuals_si%>%filter(station=="Z0497")%>%select(-station)status_biomass_bathy <- species_status_biomass%>%filter(Status=="bathypelagic")# computing mean Stable Isotope values for each species# "group" column identical to species_code to fit with input format of function meanSI_group# no "weight" input as number of indivuals sampled per species did not mirror actual species biomassindividuals_si_bathy<-data.frame(group=individuals_si_bathy[,"Species_code"], individuals_si_bathy)mean_si_species_bathy<-meanSI_group(individuals_si_bathy)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_bathy[,"sd_d13C"]/mean_si_species_bathy[,"d13C"], CV_d15N=mean_si_species_bathy[,"sd_d15N"]/mean_si_species_bathy[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_bathy <-data.frame(mean_si_species_bathy[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_bathy[,"rel_biomass"], Status=status_biomass_bathy[,"Status"], latin_name=status_biomass_bathy[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_bathy<-scaleSI_range01(data_fish_bathy)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_bathy<-IDiversity(cons=data_fish_scl_bathy, weight=data_fish_scl_bathy[,c("rel_biomass")], nm_plot="4_bathypelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_bathy,3))
bathypelagic
Near bottom
Z0524
Show the code
# 1010 Z0524 ----individuals_si_nb <- individuals_si%>%filter(station=="Z0524")%>%select(-station)status_biomass_nb <- species_status_biomass%>%filter(Status=="bottom-proximity")# computing mean Stable Isotope values for each speciesindividuals_si_nb<-data.frame(group=individuals_si_nb[,"Species_code"], individuals_si_nb)mean_si_species_nb<-meanSI_group(individuals_si_nb)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_nb[,"sd_d13C"]/mean_si_species_nb[,"d13C"], CV_d15N=mean_si_species_nb[,"sd_d15N"]/mean_si_species_nb[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_nb <-data.frame(mean_si_species_nb[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_nb[,"rel_biomass"], Status=status_biomass_nb[,"Status"], latin_name=status_biomass_nb[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_nb<-scaleSI_range01(data_fish_nb)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_nb<-IDiversity(cons=data_fish_scl_nb, weight=data_fish_scl_nb[,c("rel_biomass")], nm_plot="5_near_bottom")# printing resultsresult <-as.data.frame(round(ID_scl_ab_nb,3))
bathypelagic
PCA
Show the code
# crate a data frame with all index valuetrophic_indices <-data.frame(group =c("Epipelagic","Upper-mesopelagic","Lower-Mesopelagic","Bathypelagic","Bottom proximity" ),IDiv =c(0.953, 0.862, 0.536, 0.932, 0.994),IDis =c(0.898, 0.823 , 0.491, 0.755, 0.318),IEve =c(0.448, 0.870 , 0.619, 0.633, 0.543),IUni =c(0.564, 0.800, 0.576, 0.713, 0.758))%>% tibble::column_to_rownames(var="group")res.pca <- FactoMineR::PCA(trophic_indices, graph =FALSE)factoextra::fviz_pca_biplot(res.pca, repel =TRUE,col.var ="#00778E", col.ind ="gray50", arrowsize =1,title ="")